home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
os2
/
pvm34b3.zip
/
pvm34b3
/
pvm3
/
examples
/
Readme
< prev
next >
Wrap
Text File
|
1997-07-22
|
7KB
|
253 lines
PVM Version 3.4
EXAMPLES
_____________________________________________________________________
This directory contains C and FORTRAN example programs using PVM 3.4
All examples assume that pvm is installed and currently running.
Each target can be made separately by typing in
% aimk <target>
Each section tells how to compile the example, run the example,
and what output is expected. Some of the examples run slightly
differently on MPPs (PGON and SP2MPI), the difference are noted,
where applicable in the section "MPP notes".
===============================================================
1.) hello + hello_other:
Two programs that cooperate - shows how to create a new task
and pass messages between tasks.
Source files:
hello.c hello_other.c
To compile:
% aimk hello hello_other
Run from shell:
% hello
Run from pvm console:
pvm> spawn -> hello
Sample output:
i'm t40002
from t40003: hello, world from gollum.epm.ornl.gov
MPP Notes:
If you desire to run the hello example from the shell, then
you need to compile the "helloh"
% aimk helloh
% helloh
===============================================================
2.) master1 + slave1, fmaster1 + fslave1
A master/slave example where the master process creates and
directs some number of slave processes that cooperate to do the
work. C and FORTRAN versions. [f]master1 will spawn 3*<#hosts>
slave tasks on the virtual machine.
Source files:
master1.c slave1.c master1.f slave1.f
To compile:
% aimk master1 slave1 fmaster1 fslave1
To run from shell (C version):
% master1
To run from shell (Fortran version)
% fmaster1
To Run from PVM console:
pvm> spawn -> master1
OR
pvm> spawn -> fmaster1
Sample output:
Spawning 3 worker tasks ... SUCCESSFUL
I got 100.000000 from 1; (expecting 100.000000)
I got 200.000000 from 0; (expecting 200.000000)
I got 300.000000 from 2; (expecting 300.000000)
MPP Notes:
If you desire to run the master examples from the shell, then
you need to compile the "master1h", fmaster1h"
% aimk master1h fmaster1h
% master1h
===============================================================
3.) spmd, fspmd
An SPMD (Single Program Multiple Data) example that uses
pvm_siblings (pvmfsiblings) to determine the number of tasks
(and their task ids) that were spawned together. The parallel
computation then performs a simple token ring and passes a message.
This program should be run from the pvm console.
Source Files:
spmd.c spmd.f
To compile:
% aimk spmd fspmd
To run from pvm console:
pvm> spawn -4 -> spmd
OR
pvm> spawn -4 -> fspmd
Sample output:
[4:t4000f] Pass a token through the 4 tid ring:
[4:t4000f] 262159 -> 262160 -> 262161 -> 262162 -> 262159
[4:t4000f] token ring done
===============================================================
4.) dbwtest, ibwtest, pbwtest, rbwtest
A simple bandwidth tester. This test uses standard ping-pong type
tests and illustrates how different packing/sending can affect
message performance.
This example can be compiled with several different
options to test different types of packing.
dbwtest - pvm default (PvmDataDefault) packing
ibwtest - pvm inplace packing (PvmInPlace)
pbwtest - pvm_psend/precv
rbwtest - pvm raw data packing (PvmRaw)
Source files:
bwtest.c
To compile:
% aimk dbwtest ibwtest pbwtest rbwtest
To run from console:
pvm> spawn -2 -> dbwtest
To run from the shell:
machine1% dbwtest
machine2% dbwtest
(Note two copies of _bwtest must be running for the code to complete)
Sample output:
[4:t40003] --- Simple PVM Bandwidth Test ----
[4:t40003] Using pack option: PvmDataDefault
[4:t40003] Max data size is: 800000
[4:t40003] Number of iterations/sample: 20
[4:t40003]
[4:t40003]
[4:t40003] Roundtrip time is measured from user-space to user-space.
[4:t40003] For packed messages this includes the combined time of:
[4:t40003] inst 0: pvm_initsend()
[4:t40003] inst 0: pvm_pack()
[4:t40003] inst 0: pvm_send()
[4:t40003] inst 1: pvm_recv()
[4:t40003] inst 1: pvm_unpack()
[4:t40003] inst 1: pvm_initsend()
[4:t40003] inst 1: pvm_pack()
[4:t40003] inst 1: pvm_send()
[4:t40003] inst 0: pvm_recv()
[4:t40003] inst 0: pvm_unpack()
[4:t40003]
[4:t40003]
[4:t40003] ---------------------------------------
[4:t40003] 40003 -- I am the master
[4:t40003] t40003: 100000 doubles received correctly
[4:t40003]
[4:t40003]
[4:t40003] Roundtrip T = 1247 (us) (0.0000 MB/s) Data size: 0
[4:t40003] Roundtrip T = 1090 (us) (0.0147 MB/s) Data size: 8
[4:t40003] Roundtrip T = 1161 (us) (0.1378 MB/s) Data size: 80
[4:t40003] Roundtrip T = 1589 (us) (1.0069 MB/s) Data size: 800
[4:t40003] Roundtrip T = 6556 (us) (2.4405 MB/s) Data size: 8000
[4:t40003] Roundtrip T = 64579 (us) (2.4776 MB/s) Data size: 80000
[4:t40003] Roundtrip T = 668035 (us) (2.3951 MB/s) Data size: 800000
===============================================================
5.) timing + timing_slave:
A simple program to illustrate how to measure network bandwidth
and latency.
===============================================================
6.) hitc + hitc_slave:
A simplified kernel of a larger supercondutor application,
hitc illustrates dynamic load balancing using the
'pool of tasks' paradigm. A synthetic workload is created
in this example, and hitc automatically places one slave per host.
===============================================================
7.) gexample, fgexample
Illustrates the use of group functions including reduce f.e. global sum
and user defined reduce functions.
Source files:
gexample.c gexample.f
To compile:
% aimk gexample fgexample
To run from the shell:
% gexample
To run from the PVM console:
pvm> spawn -3 -> gexample
Sample output:
[7:t4004f] This program demonstrates some group and reduction
[7:t4004f] operations in PVM. The output displays the
[7:t4004f] the product of the first column of a Toeplitz matrix
[7:t4004f] and the matrix 1-norm. The matrix data is distributed
[7:t4004f] among several processors. The Toeplitz matrix is
[7:t4004f] symmetric with the first row being the row
[7:t4004f] vector [1 2 ... n].
[7:t4004f]
[7:t4004f] --> Using 3 processors <--
[7:t4004f]
[7:t4004f] The 1-Norm is 5050
[7:t4004f] ( Should be the sum of the integers from 1 to 100 )
[7:t4004f] The product of column 1 is 9.33262e+157
[7:t4004f] ( Should be 100 factorial)
MPP Notes:
MPPs need host versions of programs run from the shell.
These are the targets gexampleh, fgexampleh.
% aimk gexampleh fgexampleh
% gexampleh
***********************************************************************
***********************************************************************
The executables are placed in pvm3/bin/ARCH.
Step 1)
Start PVM
Start up PVM by typing
pvm [hostfile]
This console allows the user to add/delete hosts if desired.
Step 2) Run the desired example
Step 3) Stop PVM
When the user is through with the virtual machine
PVM can be shut down by giving 'halt' command to PVM console.
pvm> halt